package javachongkao.基础入门;
import java.util.Scanner;
//使用逐步逼近法对给定数值x求开根号。
//逐步逼近法说明：从0开始逐步累加步长值。
//步长=0.0001，epsilon(误差)=0.0001
//循环继续的条件：
//  平方值<x  且 |x-平方值| > epsilon
//说明与参考
//数值输出保留6位小数，使用System.out.printf("%.6f\n")
//求平方，参考Math.pow函数。
//输入值<0时，返回Double.NaN
//输入格式:
//任意数值
//输出格式:
//对每一组输入，在一行中输出其开根号。保留6位小数
public class Main5 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNextDouble()) {
            double x = scanner.nextDouble();
            if (x < 0) {
                System.out.println("NaN");
            } else {
                double step = 0.0001;
                double epsilon = 0.0001;
                double result = 0.0;

                while (Math.pow(result, 2) < x && Math.abs(x - Math.pow(result, 2)) > epsilon) {
                    result += step;
                }
                System.out.printf("%.6f\n", result);
            }
        }
        scanner.close();
    }
}
